大家好,今天想跟大家分享繼承這個單元,
不要想歪囉,不是繼承財產,是類別的繼承!
話說我也很想繼承財產 XD
物件導向程式設計可將功能不錯的類別成員,
授予其他類別來繼承(Inheritance),
被繼承的類別稱為『父類別』(Superclass),
繼承別人的稱為『子類別』(Subclass)。
子類別除了繼承父類別定義的資料和方法外,
還可以自行新增資料和方法,
因此子類別能夠提供更多的功能。
繼承除了促使子類別優於父類別之外,
就是程式碼可以重複的使用!
例如,開發了一個系統有A功能,
日後要開發另外一個系統,類似A功能的B功能,
這時候就可以利用繼承的方式,
讓大部分的程式碼不用再重寫,
直接繼承上一層的A功能,
在新增某些部分的程式就可以完成B功能系統。
繼承有幾點需要注意的!
2.子類別不能繼承父類別用private修飾子所宣告的成員,但該相同名稱的成員在子類別中可以另外定義,只是兩者是不同成員,彼此互不影響。
3.子類別可以繼承父類別用protected修飾子所宣告的成員,但該成員只能在自身類別和繼承的子類別之內部敘述使用。
以下就讓大家看看小菜鳥今天練習的程式
package extendDemo;
class CMath
{
  public void getMax(int a, int b)
  {
    int bigNum;
    if (a>b) bigNum = a;
    else bigNum = b;
    System.out.println(a + "與" + b + "的最大數為" + bigNum);
  }
}
class SonCMath extends CMath  
{
  public void getFabonacci(int a)
  {
    int firstNum = 0, secondNum = 1;
    System.out.print("費式數列:") ;
    System.out.print(firstNum + ", " +secondNum);
    int ans;
    for(int i=2; i<=a; i++)
    {
      ans = firstNum + secondNum;
      System.out.print(", " +ans);
      firstNum = secondNum;
      secondNum = ans;
    }
  }
}
public class extendDemo
{
  public static void main(String[] args)
  {
    SonCMath math1 = new SonCMath();
    math1.getMax(10,20);        
    System.out.println();
    math1.getFabonacci(10);     
  }
}
以上這個範例最重要的地方就是第13行,類別SonCMath用extends來繼承類別CMath,
因此類別CMath所有的成員,由類別SonCMath繼承接受,
而且還多了一個可以顯示費氏數列的getFabonacci()方法成員。